/**
 * Created by thumbclass on 2017/10/20.
 */

import angular from 'angular';

//“错误信息提示”指令
export default angular.module('app.directives', [])
    .directive('inputEmail', function() {
        var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@example\.com$/i;

        return {
            require: 'ngModel',
            restrict: '',//模板匹配
            link: function(scope, elm, attrs, ctrl) {
                if (ctrl && ctrl.$validators.email) {
                    // this will overwrite the default Angular email validator
                    ctrl.$validators.email = function(modelValue) {
                        return ctrl.$isEmpty(modelValue) || EMAIL_REGEXP.test(modelValue);
                    };
                }
            }
        };
    })

//     .directive('ttFieldError', function
//         ttFieldError($compile) {
//         return {
//             restrict: 'A',
//             require: 'ngModel',
//             link: function (scope, element, attrs, ngModel) {
//                 // var isSame = function (value) {
//                 var subScope = scope.$new(true);
//                 //    取对照值，通过scope.$eval把attrs.ttAssertSameAs最为一个表达式在当前作用域中求职，否则只是一个固定的字符串
//                 subScope.hasError = function () {
//                     return ngModel.$invalid && ngModel.$dirty;
//                 };
//
//
//                 subScope.errors = function () {
//                     return ngModel.$error;
//                 };
//                 var hint = $compile('<ul ng-if="hasError()">{{errors()}}</ul>')
//                 (subScope);
//                 element.after(hint);
//             }
//         };
//     })
//     // “确认密码”的验证规则
//     .directive('ttAssertSameAs', function
//         ttAssertSameAs() {
//         return {
//             restrict: 'A',
//             require: 'ngModel',
//             link: function (scope, element, attrs, ngModel) {
//                 var isSame = function (value) {
//                     var anotherValue = scope.$eval(attrs.ttAssertSameAs);
//                     //    取对照值，通过scope.$eval把attrs.ttAssertSameAs最为一个表达式在当前作用域中求职，否则只是一个固定的字符串
//                     return value === anotherValue;
//                 };
//                 ngModel.$parsers.push(function (value) {
//                     //    调用$setValidity设置验证结果，第一个参数就是名字，和$error中的属性名一致，但是取值相反因为这里表示“有效”，$error表示“无效”
//                     ngModel.$setValidity('same', isSame(value));
//                     //    验证通过返回转换后的值，否则返回undefined
//                     return isSame(value) ? value : undefined;
//                 });
//                 //    这是AssertSameAs验证器所特有的，因为当对照值发生变化时，也要更新有效状态
//                 scope.$watch(
//                     //    对这个函数值进行监控，变化时就触发一个函数：变化通知
//                     function () {
//                         return scope.$eval(attrs.ttAssertSameAs);
//
//
//                     },
//                     function () {
//                         //    变化时重新验证饼设置验证结果
//                         ngModel.$setValidity('same', isSame(ngModel.$modelValue));
//
//                     }
//                 );
//             }
//         };
//     })
//     .directive('ttCaptcha',function ttCaptcha(){
//         return{
//             restrict: 'A',
//         link:function (scope,element) {
//             var  changeSrc=function () {
//                 element,attr('src','/api/captcha.jpg?random='+new Date().getTime());
//
//             };
//             changeSrc();
//             element.on('click',function () {
//                 changeSrc();
//             });
//
//         }
//     };
//
// })




.name;

